home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / include / dev / RCS / hppi.h,v < prev    next >
Text File  |  1992-07-28  |  25KB  |  1,156 lines

  1. head     1.12;
  2. branch   ;
  3. access   ;
  4. symbols  ;
  5. locks    elm:1.12; strict;
  6. comment  @ * @;
  7.  
  8.  
  9. 1.12
  10. date     92.07.28.16.34.56;  author elm;  state Exp;
  11. branches ;
  12. next     1.11;
  13.  
  14. 1.11
  15. date     92.07.07.17.04.15;  author elm;  state Exp;
  16. branches ;
  17. next     1.10;
  18.  
  19. 1.10
  20. date     92.01.10.02.04.15;  author elm;  state Exp;
  21. branches ;
  22. next     1.9;
  23.  
  24. 1.9
  25. date     91.08.12.13.33.17;  author elm;  state Exp;
  26. branches ;
  27. next     1.8;
  28.  
  29. 1.8
  30. date     91.08.07.15.19.19;  author elm;  state Exp;
  31. branches ;
  32. next     1.7;
  33.  
  34. 1.7
  35. date     91.08.05.16.55.18;  author elm;  state Exp;
  36. branches ;
  37. next     1.6;
  38.  
  39. 1.6
  40. date     91.07.24.12.25.54;  author elm;  state Exp;
  41. branches ;
  42. next     1.5;
  43.  
  44. 1.5
  45. date     91.06.27.12.10.14;  author elm;  state Exp;
  46. branches ;
  47. next     1.4;
  48.  
  49. 1.4
  50. date     91.03.30.17.25.51;  author elm;  state Exp;
  51. branches ;
  52. next     1.3;
  53.  
  54. 1.3
  55. date     91.02.01.16.26.53;  author elm;  state Exp;
  56. branches ;
  57. next     1.2;
  58.  
  59. 1.2
  60. date     91.01.04.14.31.38;  author elm;  state Exp;
  61. branches ;
  62. next     1.1;
  63.  
  64. 1.1
  65. date     90.12.05.12.36.01;  author elm;  state Exp;
  66. branches ;
  67. next     ;
  68.  
  69.  
  70. desc
  71. @Include file for the Thinking Machines HPPI-S and HPPI-D boards.
  72. @
  73.  
  74.  
  75. 1.12
  76. log
  77. @Added tsap field to DSND, DRCV, ALSN, and CONN command blocks.
  78. @
  79. text
  80. @/*
  81.  * hppi.h --
  82.  *
  83.  *    Declarations for commands specific to the Thinking Machines
  84.  *    HIPPI-S and HIPPI-D boards.
  85.  *
  86.  * Copyright 1990 Regents of the University of California
  87.  * Permission to use, copy, modify, and distribute this
  88.  * software and its documentation for any purpose and without
  89.  * fee is hereby granted, provided that the above copyright
  90.  * notice appear in all copies.  The University of California
  91.  * makes no representations about the suitability of this
  92.  * software for any purpose.  It is provided "as is" without
  93.  * express or implied warranty.
  94.  *
  95.  * $Header: /sprite/src/lib/include/dev/RCS/hppi.h,v 1.11 92/07/07 17:04:15 elm Exp Locker: elm $ SPRITE (Berkeley)
  96.  */
  97.  
  98. #ifndef _HPPI
  99. #define _HPPI
  100.  
  101. typedef unsigned char uint8;
  102.  
  103. /*
  104.  * IOControl calls for the HPPI interface.
  105.  */
  106. #define IOC_HPPI        (20 << 16)
  107.  
  108. #define IOC_HPPI_LOAD            (IOC_HPPI | 2)
  109. #define IOC_HPPI_GO            (IOC_HPPI | 3)
  110. #define IOC_HPPI_DEBUG            (IOC_HPPI | 4)
  111. #define IOC_HPPI_TRACE            (IOC_HPPI | 5)
  112. #define IOC_HPPI_MAP_THRESHOLD        (IOC_HPPI | 6)
  113. #define IOC_HPPI_ECHO            (IOC_HPPI | 7)
  114. #define IOC_HPPI_RESET            (IOC_HPPI | 8)
  115. #define IOC_HPPI_SRC_RESET        (IOC_HPPI | 9)
  116. #define IOC_HPPI_DST_RESET        (IOC_HPPI | 10)
  117. #define IOC_HPPI_HARD_RESET        (IOC_HPPI | 11)
  118. #define IOC_HPPI_SETUP            (IOC_HPPI | 12)
  119. #define IOC_HPPI_GET_ADAP_INFO        (IOC_HPPI | 13)
  120. #define IOC_HPPI_DIAG            (IOC_HPPI | 14)
  121. #define IOC_HPPI_EXTENDED_DIAG        (IOC_HPPI | 15)
  122. #define IOC_HPPI_START            (IOC_HPPI | 16)
  123. #define IOC_HPPI_COLLECT_STATS        (IOC_HPPI | 17)
  124. #define IOC_HPPI_GET_STATS        (IOC_HPPI | 18)
  125. #define IOC_HPPI_CLEAR_STATS        (IOC_HPPI | 19)
  126. #define IOC_HPPI_SET_FLAGS        (IOC_HPPI | 20)
  127. #define IOC_HPPI_GET_FLAGS        (IOC_HPPI | 21)
  128. #define IOC_HPPI_RESET_FLAGS        (IOC_HPPI | 22)
  129. #define IOC_HPPI_SOURCE            (IOC_HPPI | 23)
  130. #define IOC_HPPI_SINK            (IOC_HPPI | 24)
  131. #define IOC_HPPI_SEND_DGRAM        (IOC_HPPI | 25)
  132. #define IOC_HPPI_ADDRESS        (IOC_HPPI | 26)
  133. #define IOC_HPPI_SRC_ROM_CMD        (IOC_HPPI | 27)
  134. #define IOC_HPPI_DST_ROM_CMD        (IOC_HPPI | 28)
  135. #define IOC_HPPI_WRITE_REG        (IOC_HPPI | 29)
  136. #define IOC_HPPI_READ_REG        (IOC_HPPI | 30)
  137. #define IOC_HPPI_READ_BOARD_WORD    (IOC_HPPI | 31)
  138. #define IOC_HPPI_WRITE_BOARD_WORD    (IOC_HPPI | 32)
  139. #define IOC_HPPI_SET_BOARD_FLAGS    (IOC_HPPI | 33)
  140. #define IOC_HPPI_SET_SRC_BOARD_FLAGS    (IOC_HPPI | 34)
  141. #define IOC_HPPI_SET_DST_BOARD_FLAGS    (IOC_HPPI | 35)
  142. #define    IOC_HPPI_RECV_DGRAM        (IOC_HPPI | 36)
  143.  
  144. #define    DEV_HPPI_FILLED_XRB    0x1
  145. #define    DEV_HPPI_FILLED_CMD    0x2
  146.  
  147. typedef unsigned short uint16;
  148. typedef unsigned long uint32;
  149.  
  150. typedef struct Dev_HppiHdr {
  151.     unsigned char opcode;
  152.     unsigned char serial;
  153.     uint16 magic;
  154. } Dev_HppiCmdHdr;
  155.  
  156. typedef struct Dev_HppiSetTrace {
  157.     Dev_HppiCmdHdr hdr;
  158.     uint32 level;
  159. } Dev_HppiSetTrace;
  160.  
  161. typedef struct Dev_HppiDumpTrace {
  162.     Dev_HppiCmdHdr hdr;
  163. } Dev_HppiDumpTrace;
  164.  
  165. typedef struct Dev_HppiClearTrace {
  166.     Dev_HppiCmdHdr hdr;
  167. } Dev_HppiClearTrace;
  168.  
  169. typedef struct Dev_HppiOutput {
  170.     Dev_HppiCmdHdr hdr;
  171.     uint32 fifoDataSize;
  172.     uint32 iopDataSize;
  173. } Dev_HppiOutput;
  174.  
  175. typedef struct Dev_HppiOutputTrace {
  176.     Dev_HppiCmdHdr hdr;
  177.     uint32 fifoDataSize;
  178.     uint32 iopDataSize;
  179. } Dev_HppiOutputTrace;
  180.  
  181. typedef struct Dev_HppiReset {
  182.     Dev_HppiCmdHdr hdr;
  183. } Dev_HppiReset;
  184.  
  185. typedef struct Dev_HppiScatterGatherElement {
  186.     uint32 address;
  187.     uint32 size;
  188. } Dev_HppiScatterGatherElement;
  189.  
  190. typedef struct Dev_HppiScatterGather {
  191.     Dev_HppiCmdHdr hdr;
  192.     uint16    size;
  193.     uint8    tag;
  194.     uint8    FILLER1;
  195.     uint32    offset;            /* offset within connection */
  196.     Dev_HppiScatterGatherElement element[128];
  197. } Dev_HppiScatterGather;
  198.  
  199. typedef struct Dev_HppiScatterGatherTrace {
  200.     Dev_HppiCmdHdr hdr;
  201.     uint16 size;
  202.     uint16 tag;
  203.     Dev_HppiScatterGatherElement element[128];
  204. } Dev_HppiScatterGatherTrace;
  205.  
  206. typedef struct Dev_HppiSetup {
  207.     Dev_HppiCmdHdr hdr;
  208.     uint32    reqBlockSize;
  209.     uint32    queueAddress;
  210.     uint32    queueSize;
  211. } Dev_HppiSetup;
  212.  
  213. /*
  214.  * The standard XRB command header.  All of the Dev_HppiSend commands use
  215.  * this XRB information, and thus include the structure.
  216.  */
  217. typedef struct Dev_HppiStdXRB {
  218.     uint16    xrbRef;        /* XRB reference number (IDs connection) */
  219.     uint8    status;        /* status returned from hub */
  220.     uint8    tag;        /* to match with scatter-gather array */
  221.     uint32    xrbId;        /* Used to identify command on return */
  222.     uint32    xrbBufId;    /* Also used to identify returned command */
  223. } Dev_HppiStdXRB;
  224.  
  225. /*
  226.  * This command tells the HPPI boards to listen for a connection.  When a
  227.  * connection request is received, this command is put into the ring buffer
  228.  * with the xrbRef and status fields filled in.
  229.  */
  230. typedef struct Dev_HppiSendALSN {
  231.     Dev_HppiCmdHdr    hdr;
  232.     Dev_HppiStdXRB    xrbHdr;
  233.     uint8        xrbRemTA[7];    /* remote address */
  234.     uint8        FILLER2;
  235.     uint8        xrbLocTA[7];    /* local address */
  236.     uint8        FILLER3;
  237.     uint8        tsap[4];
  238. } Dev_HppiSendALSN;
  239.  
  240. typedef struct Dev_HppiSendCONN {
  241.     Dev_HppiCmdHdr    hdr;
  242.     Dev_HppiStdXRB    xrbHdr;
  243.     uint8        xrbConPar[16];    /* connection parameters */
  244.     uint8        xrbRemTA[7];    /* remote address */
  245.     uint8        FILLER2;
  246.     uint8        xrbLocTA[7];    /* local address */
  247.     uint8        FILLER3;
  248.     uint8        tsap[4];
  249. }  Dev_HppiSendCONN;
  250.  
  251. /*
  252.  * Send a close connection request to the client.  This is more of an abort
  253.  * than a close, since it simply tears down the connection without giving
  254.  * a reason.
  255.  */
  256. typedef struct Dev_HppiSendCLSE {
  257.     Dev_HppiCmdHdr    hdr;
  258.     Dev_HppiStdXRB    xrbHdr;
  259. }  Dev_HppiSendCLSE;
  260.  
  261. /*
  262.  * Send a close connection request to the client.  This request is a more
  263.  * graceful exit.
  264.  */
  265. typedef struct Dev_HppiSendRLSE {
  266.     Dev_HppiCmdHdr    hdr;
  267.     Dev_HppiStdXRB    xrbHdr;
  268.     uint16        xrbISOCode;    /* reason for releasing connection */
  269.     uint16        FILLER1;
  270. }  Dev_HppiSendRLSE;
  271.  
  272. typedef struct Dev_HppiSendXfer {
  273.     Dev_HppiCmdHdr    hdr;
  274.     Dev_HppiStdXRB    xrbHdr;
  275.     uint32        cnt;        /* size of transfer */
  276. }  Dev_HppiSendXfer;
  277.  
  278. typedef struct Dev_HppiSendDRCV {
  279.     Dev_HppiCmdHdr    hdr;
  280.     Dev_HppiStdXRB    xrbHdr;
  281.     uint8        xrbRemTA[7];    /* remote address */
  282.     uint8        FILLER2;
  283.     uint8        xrbLocTA[7];    /* local address */
  284.     uint8        FILLER3;
  285.     uint8        tsap[4];
  286.     uint8        xrbDG[6];    /* datagram parameters */
  287.     uint16        FILLER4;
  288.     uint32        cnt;    /* size of received datagram (in & out) */
  289. }  Dev_HppiSendDRCV;
  290.  
  291. typedef struct Dev_HppiSendDSND {
  292.     Dev_HppiCmdHdr    hdr;
  293.     Dev_HppiStdXRB    xrbHdr;
  294.     uint8        xrbRemTA[7];    /* remote address */
  295.     uint8        FILLER2;
  296.     uint8        xrbLocTA[7];    /* local address */
  297.     uint8        FILLER3;
  298.     uint8        tsap[4];
  299.     uint8        xrbDG[6];    /* datagram parameters */
  300.     uint16        FILLER4;
  301.     uint32        fifoDataSize;    /* amount of data to read from FIFO */
  302.     uint32        iopDataSize;    /* amount of data to read from IOP */
  303. }  Dev_HppiSendDSND;
  304.  
  305. typedef struct Dev_HppiDMAInfo {
  306.     unsigned char    cmd;        /* The DMA command.  See below. */
  307.     unsigned char    id;        /* Transaction id. Set to 0. */
  308.     unsigned short    VCref;        /* VC reference. Set to 0. */
  309.     unsigned int    offset;        /* Buffer offset. Set to 0. */
  310.     unsigned int    reference;    /* Unused. */
  311.     unsigned int    length;        /* Length of the DMA (size of the
  312.                      * XRB minus this structure). */
  313. } Dev_HppiDMAInfo;
  314.  
  315. typedef struct Dev_HppiErrorMsg {
  316.     uint32 magic;
  317.     uint32 errorType;
  318.     uint32 errorInfoLength;        /* # of words that follow which
  319.                      * describe the error that occurred */
  320. } Dev_HppiErrorMsg;
  321.  
  322. typedef struct Dev_HppiCopyDataMsg {
  323.     uint16 size;
  324.     uint16 magic;
  325.     Dev_HppiDMAInfo dmaWord;
  326.     Dev_HppiScatterGatherElement element[128];
  327. } Dev_HppiCopyDataMsg;
  328.  
  329. typedef struct Dev_HppiDoDMA {
  330.     uint16 size;
  331.     uint16 magic;
  332.     uint32 vmeAddress;
  333. } Dev_HppiDoDMA;
  334.  
  335. typedef struct Dev_HppiRegCmd {
  336.     int        board;
  337.     uint32    offset;
  338.     uint32    value;
  339. } Dev_HppiRegCmd;
  340.  
  341. typedef struct Dev_HppiGo {
  342.     int        board;
  343.     uint32    startAddress;
  344. } Dev_HppiGo;
  345.  
  346. typedef struct Dev_HppiLoadHdr {
  347.     int        board;
  348.     uint32    startAddress;
  349.     uint32    size;
  350. } Dev_HppiLoadHdr;
  351.  
  352. typedef struct Dev_HppiMemory {
  353.     Dev_HppiCmdHdr hdr;
  354.     uint32 address;
  355.     uint32 value;
  356. } Dev_HppiMemory;
  357.  
  358. typedef struct Dev_HppiSetBoardFlags {
  359.     Dev_HppiCmdHdr hdr;
  360.     uint32 flags;
  361. } Dev_HppiSetBoardFlags;
  362.  
  363. #define DEV_HPPI_FLAG_DEBUG        (1 << 0)
  364. #define DEV_HPPI_FLAG_LOOPBACK_PORT    (1 << 1)
  365. #define DEV_HPPI_FLAG_STANDARD_PORT    (1 << 2)
  366. #define DEV_HPPI_FLAG_ABORT_CONN_ON_ERROR (1 << 3)
  367. #define    DEV_HPPI_FLAG_DEBUG_DATA    (1 << 4)
  368. #define    DEV_HPPI_FLAG_DEBUG_PROC    (1 << 5)
  369. #define DEV_HPPI_FLAG_DEBUG_MISC    (1 << 6)
  370. #define DEV_HPPI_FLAG_XBOARD_SLOT_SHIFT    (7)
  371. #define    DEV_HPPI_FLAG_XBOARD_SLOT_MASK    (7 << DEV_HPPI_FLAG_XBOARD_SLOT_SHIFT)
  372.  
  373. #define DEV_HPPI_SRC_BOARD        0x1
  374. #define DEV_HPPI_DST_BOARD        0x2
  375. #define DEV_HPPI_IOP_BOARD        0x10
  376.  
  377. #define    DEV_HPPI_SRC_MAGIC        0xfade
  378. #define DEV_HPPI_DEST_MAGIC        0xcafe
  379. #define DEV_HPPI_ERR_MAGIC        0xdeadfad
  380. #define DEV_HPPI_COPY_MAGIC        0xface
  381. #define DEV_HPPI_DMA_MAGIC        0xaced
  382.  
  383. #define DEV_HPPI_SET_TRACE        0x00
  384. #define DEV_HPPI_DUMP_TRACE        0x01
  385. #define DEV_HPPI_CLEAR_TRACE        0x02
  386. #define DEV_HPPI_OUTPUT            0x03
  387. #define DEV_HPPI_OUTPUT_TRACE        0x43
  388. #define DEV_HPPI_RESET            0x04
  389. #define DEV_HPPI_SCATTER_GATHER        0x05
  390. #define    DEV_HPPI_SCATTER_GATHER_TRACE    0x45
  391. #define DEV_HPPI_SETUP            0x06
  392. #define DEV_HPPI_READ_MEMORY        0X07
  393. #define DEV_HPPI_WRITE_MEMORY        0x08
  394. #define DEV_HPPI_SET_BOARD_FLAGS    0x09
  395. #define    DEV_HPPI_OUTPUT_TO_IOP        0x0a
  396. #define    DEV_HPPI_INPUT_FROM_IOP        0x0b
  397. #define DEV_HPPI_SEND_ALSN        0x0c
  398. #define DEV_HPPI_SEND_CONN        0x0d
  399. #define DEV_HPPI_SEND_CLSE        0x0e
  400. #define DEV_HPPI_SEND_RLSE        0x0f
  401. #define DEV_HPPI_SEND_SEND        0x10
  402. #define    DEV_HPPI_SEND_SEOM        0x11
  403. #define    DEV_HPPI_SEND_RECV        0x12
  404. #define DEV_HPPI_SEND_DRCV        0x18
  405. #define DEV_HPPI_SEND_DSND        0x19
  406.  
  407. #define DEV_HPPI_MAX_ROM_CMD_SIZE    1000
  408. #define DEV_HPPI_LOAD_REQUEST        0
  409. #define DEV_HPPI_GO_REQUEST        0
  410.  
  411. /*
  412.  * Interrupt bits for the HPPI-D board
  413.  */
  414. #define DEV_HPPI_DST_INTR_CBIAVAIL    0x40    /* CBI cmd register avail */
  415. #define DEV_HPPI_DST_INTR_GEN        0x20    /* generic interrupt */
  416. #define DEV_HPPI_DST_INTR_PARITY    0x10    /* parity error occurred */
  417. #define DEV_HPPI_DST_INTR_ACCESS    0x08    /* access error occurred */
  418. #define DEV_HPPI_DST_INTR_IFIFO_EMPTY    0x04    /* data input fifo empty */
  419. #define DEV_HPPI_DST_INTR_OFIFO_READY    0x02    /* data output fifo has data */
  420. #define DEV_HPPI_DST_INTR_CBIRESPONSE    0x01    /* CBI response reg written */
  421. #define DEV_HPPI_DST_INTR_ALL        (DEV_HPPI_DST_INTR_CBIAVAIL | \
  422.                      DEV_HPPI_DST_INTR_GEN | \
  423.                      DEV_HPPI_DST_INTR_PARITY | \
  424.                      DEV_HPPI_DST_INTR_ACCESS | \
  425.                      DEV_HPPI_DST_INTR_IFIFO_EMPTY | \
  426.                      DEV_HPPI_DST_INTR_OFIFO_READY | \
  427.                      DEV_HPPI_DST_INTR_CBIRESPONSE)
  428.  
  429. #define DEV_HPPI_OFIFO_HF        (1 << 21)
  430. #define DEV_HPPI_OFIFO_FULL        (1 << 20)
  431. #define DEV_HPPI_OFIFO_EMPTY        (1 << 19)
  432. #define DEV_HPPI_IFIFO_HF        (1 << 18)
  433. #define DEV_HPPI_IFIFO_FULL        (1 << 17)
  434. #define DEV_HPPI_IFIFO_EMPTY        (1 << 16)
  435.  
  436. #define DEV_HPPI_MAX_ROM_REPLY        0x8
  437.  
  438. #define DEV_HPPI_IFIFO_DEPTH        1024
  439.  
  440. /*
  441.  * Bits in the configuration register that enable various
  442.  * interrupts.
  443.  */
  444. #define DEV_HPPI_INTR_ENB_29K        (1 << 28)    /* 29K interrupts */
  445. #define DEV_HPPI_INTR_ENB_PARITY    (1 << 27)    /* SM DOUT parity */
  446. #define DEV_HPPI_INTR_ENB_ACCESS_ERROR    (1 << 26)    /* VMEbus access error
  447.                              * has occurred */
  448. #define DEV_HPPI_INTR_ENB_IFIFO_EMPTY    (1 << 25)    /* input fifo is
  449.                              * empty */
  450. #define DEV_HPPI_INTR_ENB_OFIFO_DATA    (1 << 24)    /* output fifo has
  451.                              * data */
  452. #define DEV_HPPI_INTR_ENB        (1 << 11)    /* This bit must be
  453.                              * set to enable
  454.                              * any interrupts */
  455. #define DEV_HPPI_INTR_ROAK        (1 << 21)    /* interrupts should
  456.                                release on ack */
  457. #define DEV_HPPI_BUS_REQ_SHIFT        19        /* shift left this
  458.                              * many places for
  459.                              * bus req level */
  460. /*
  461.  * These are the ROM commands.
  462.  */
  463.  
  464. #define    DEV_HPPI_FIRST_DIAG_CODE    0x80
  465. #define    DEV_HPPI_REPORT_PU_STATUS    REQ_ID_FIRST_DIAG_CODE
  466. #define    DEV_HPPI_GET_MEMORY        0x81
  467. #define    DEV_HPPI_PUT_MEMORY        0x82
  468. #define    DEV_HPPI_DO_CHECKSUM        0x83
  469. #define    DEV_HPPI_TEST_CHECKSUM        0x84
  470. #define    DEV_HPPI_FILL_MEMORY        0x85
  471. #define    DEV_HPPI_VERIFY_MEMORY        0x86
  472. #define    DEV_HPPI_START_CODES        0x87
  473. #define    DEV_HPPI_ECHO            0x88
  474. #define    DEV_HPPI_LOOP_WRITE        0x89
  475. #define    DEV_HPPI_LOOP_READ        0x8a
  476. #define    DEV_HPPI_TEST_RAM        0x8b
  477. #define    DEV_HPPI_TEST_AL        0x8c    /* test address lines    */
  478. #define    DEV_HPPI_BYTE_TEST        0x8d    /* test byte access    */
  479. #define    DEV_HPPI_MONITOR_REGISTER    0x8e    /* continuously monitor    */
  480. #define DEV_HPPI_SIZE_SMO_FIFO        0x8f    /* measure SM Data Out Fifo */
  481.  
  482. #define    DEV_HPPI_END_CONNECTION        0xa0    /* event bit 13        */
  483. #define    DEV_HPPI_MAKE_CONNECTION    0xa1    /* event bit 12        */
  484. #define    DEV_HPPI_SEND_BURST        0xa2    /* send test burst data    */
  485. #define    DEV_HPPI_ENTER_RECEIVE_MODE    0xa3
  486. #define    DEV_HPPI_BURST_DATA        0xa4
  487. #define    DEV_HPPI_HPPIS_SESSION        0xa5    /* do a source session    */
  488.  
  489. #define    DEV_HPPI_WRITE_FIFO        0xa6    /* write to fifo    */
  490. #define    DEV_HPPI_READ_FIFO        0xa7    /* read from fifo    */
  491.  
  492. #define    DEV_HPPI_NAK            -1
  493.  
  494.  
  495. typedef    struct
  496. {
  497. int    length;
  498. int    response_id;
  499. int    caller_pid;
  500. int    status;
  501. int    error_code;
  502. int    content [1]; /* up to fifo size */
  503. }PACKET_RESPONSE;
  504.  
  505. typedef    struct
  506. {
  507. int    length;
  508. int    command_id;
  509. int    caller_id;
  510. int    content [1]; /* up to fifo size */
  511. }PACKET_COMMAND;
  512.  
  513. /*
  514.  * Structures for the various ROM commands and responses.
  515.  */
  516. typedef    struct Dev_HppiRomCmdHdr {
  517.     int        length;
  518.     int        commandId;
  519.     int        callerPid;
  520. } Dev_HppiRomCmdHdr;
  521.  
  522. typedef    struct Dev_HppiRomReplyHdr {
  523.     int        length;
  524.     int        responseId;
  525.     int        callerPid;
  526.     int        status;
  527.     int        errorCode;
  528. } Dev_HppiRomReplyHdr;
  529.  
  530. #define    ID_SIZE        64
  531. #define    TYPE_ROM    1
  532. #define    TYPE_RAM    2
  533.  
  534. typedef    struct Dev_HppiRomStatusReport {
  535.     Dev_HppiRomReplyHdr    hdr;
  536.     int            executiveType;
  537.     int            version;
  538.     char        id[ID_SIZE];
  539. } Dev_HppiRomStatusReport;
  540.  
  541. typedef    struct Dev_HppiRomWrite {
  542.     Dev_HppiRomCmdHdr    hdr;
  543.     int            writeAddress;
  544.     int            writeWords;
  545.     int            data[1];        /* up to fifo size */
  546. } Dev_HppiRomWrite;
  547.  
  548. typedef    struct Dev_HppiRomWriteReply {
  549.     Dev_HppiRomReplyHdr    hdr;
  550.     int            addressWritten;
  551.     int            wordsWritten;
  552. } Dev_HppiRomWriteReply;
  553.  
  554. typedef    struct Dev_HppiRomRead {
  555.     Dev_HppiRomCmdHdr    hdr;
  556.     int            readAddress;
  557.     int            readWords;
  558. } Dev_HppiRomRead;
  559.  
  560. typedef    struct Dev_HppiRomReadReply {
  561.     Dev_HppiRomReplyHdr    hdr;
  562.     int            addressRead;
  563.     int            wordsRead;
  564.     int            dataRead [1];        /* up to fifo size */
  565. } Dev_HppiRomReadReply;
  566.  
  567. typedef    struct Dev_HppiRomGo {
  568.     Dev_HppiRomCmdHdr    hdr;
  569.     int            startAddress;
  570. } Dev_HppiRomGo;
  571.  
  572. typedef    struct Dev_HppiRomGoReply {
  573.     Dev_HppiRomReplyHdr    hdr;
  574.     int            startAddress;
  575. } Dev_HppiRomGoReply;
  576.  
  577.  
  578. #if 0
  579. typedef    struct
  580. {
  581. int    length;
  582. int    response_id;
  583. int    caller_pid;
  584. int    address_to_fill;
  585. int    words_to_fill;
  586. int    pattern_to_fill;
  587. int    fill_increment;
  588. }FILL_COMMAND;
  589.  
  590. typedef    struct
  591. {
  592. int    length;
  593. int    response_id;
  594. int    caller_pid;
  595. int    status;
  596. int    error_code;
  597. int    address_filled;
  598. int    words_filled;
  599. int    pattern_filled;
  600. int    fill_increment;
  601. }FILL_RESPONSE;
  602.  
  603. typedef    struct
  604. {
  605. int    length;
  606. int    response_id;
  607. int    caller_pid;
  608. int    address_to_verify;
  609. int      words_to_verify;
  610. int    pattern_to_verify;
  611. int    verify_increment;
  612. }VERIFY_COMMAND;
  613.  
  614. typedef    struct
  615. {
  616. int    length;
  617. int    response_id;
  618. int    caller_pid;
  619. int    status;
  620. int    error_code;
  621. int    address_verified;
  622. int    words_verified;
  623. int    pattern_verified;
  624. int    verify_increment;
  625. int    bad_data;
  626. }VERIFY_RESPONSE;
  627.  
  628. typedef    struct
  629. {
  630. int    length;
  631. int    response_id;
  632. int    caller_pid;
  633. int    start_address;
  634. int    size_to_check;
  635. }CHECKSUM_COMMAND;
  636.  
  637. typedef    struct
  638. {
  639. int    length;
  640. int    response_id;
  641. int    caller_pid;
  642. int    status;
  643. int    error_code;
  644. int    start_address;
  645. int    size_to_check;
  646. int    checksum;
  647. }CHECKSUM_RESPONSE;
  648.  
  649. typedef    struct
  650. {
  651. int    length;
  652. int    response_id;
  653. int    caller_pid;
  654. int    start_address;
  655. int    size_to_check;
  656. }TEST_CHECKSUM_COMMAND;
  657.  
  658. typedef    struct
  659. {
  660. int    length;
  661. int    response_id;
  662. int    caller_pid;
  663. int    status;
  664. int    error_code;
  665. int    start_address;
  666. int    size_to_check;
  667. int    checksum;
  668. int    old_checksum;
  669. }TEST_CHECKSUM_RESPONSE;
  670.  
  671. typedef    struct
  672. {
  673. COMMAND_HEADER    header;
  674. int        address_to_write;
  675. int        write_pattern;
  676. int        delay_between_write;
  677. } WRITE_LOOP_COMMAND;
  678.  
  679.  
  680. typedef    struct
  681. {
  682. RESPONSE_HEADER    header;
  683. int        address_to_write;
  684. int        write_pattern;
  685. int        delay_between_write;
  686. } WRITE_LOOP_RESPONSE;
  687.  
  688. typedef    struct
  689. {
  690. COMMAND_HEADER    header;
  691. int        address_to_read;
  692. int        delay_between_read;
  693. BOOLEAN        send_read_data_to_host;
  694. } READ_LOOP_COMMAND;
  695.  
  696. typedef    struct
  697. {
  698. RESPONSE_HEADER    header;
  699. int        address_to_read;
  700. int            delay_between_read;
  701. int        data_just_read;
  702. } READ_LOOP_RESPONSE;
  703.  
  704. typedef    struct
  705. {
  706. COMMAND_HEADER    header;
  707. int        start_addr;
  708. int        stop_addr;
  709. } TEST_RAM_COMMAND;
  710.  
  711. typedef    struct
  712. {
  713. RESPONSE_HEADER    header;
  714. int        failed_addr;
  715. int        read_back;
  716. int        expected;
  717. } TEST_RAM_RESPONSE;
  718.  
  719. typedef    struct
  720. {
  721. COMMAND_HEADER    header;
  722. int        base_address;
  723. int        stop_address;
  724. } TEST_AL_COMMAND;
  725.  
  726. typedef    struct
  727. {
  728. RESPONSE_HEADER    header;
  729. int        failed_addr;
  730. } TEST_AL_RESPONSE;
  731.  
  732. typedef    struct
  733. {
  734. COMMAND_HEADER    header;
  735. int        location_to_test;
  736. } BYTE_TEST_COMMAND;
  737.  
  738. typedef struct
  739. {
  740. RESPONSE_HEADER    header;
  741. int        failed_byte;
  742. int        expected;
  743. int        got;
  744. } BYTE_TEST_RESPONSE;
  745.  
  746. typedef    struct
  747. {
  748. int    length;
  749. int    command_id;
  750. int    caller_pid;
  751. int    address_to_monitor;
  752. } MONITOR_COMMAND;
  753.  
  754. typedef    struct
  755. {
  756. RESPONSE_HEADER    response;
  757. int    address_to_monitor;
  758. int    value_of_register;
  759. } MONITOR_RESPONSE;
  760.  
  761. typedef struct
  762. {
  763. COMMAND_HEADER header;
  764. int smi_fifo_size;
  765. } SIZE_SMO_FIFO_COMMAND;
  766.  
  767. typedef struct
  768. {
  769. RESPONSE_HEADER response;
  770. int smo_fifo_size;
  771. } SIZE_SMO_FIFO_RESPONSE;
  772.  
  773. typedef    struct
  774. {
  775. int    length;
  776. int    command_id;
  777. int    caller_pid;
  778. int    i_field;
  779. int    usleep_counts;
  780. } MAKE_CONNECTION_COMMAND;
  781.  
  782. typedef    struct
  783. {
  784. RESPONSE_HEADER    response;
  785. int    hppi_status_register;
  786. } MAKE_CONNECTION_RESPONSE;
  787.  
  788. typedef    struct
  789. {
  790. int    length;
  791. int    command_id;
  792. int    caller_pid;
  793. int    priority;
  794. } BREAK_CONNECTION_COMMAND;
  795.  
  796. typedef    struct
  797. {
  798. RESPONSE_HEADER    response;
  799. int    hppi_status_register;
  800. } BREAK_CONNECTION_RESPONSE;
  801.  
  802. typedef    struct
  803. {
  804. int    length;
  805. int    command_id;
  806. int    caller_pid;
  807. int    length_of_short_burst;
  808. int    short_burst_goes_first;
  809. int    full_burst_count;
  810. int    first_data_to_send;
  811. int    increment_factor;
  812. int    ready_timeout_limit;
  813. } SEND_BURST_COMMAND;
  814.  
  815. typedef    struct
  816. {
  817. RESPONSE_HEADER    response;
  818. int    hppi_status_register;
  819. int    burst_sent;
  820. int    burst_number_when_failure_occured;
  821. } SEND_BURST_RESPONSE;
  822.  
  823. typedef    struct
  824. {
  825. int    length;
  826. int    command_id;
  827. int    caller_pid;
  828. int    i_field;
  829. int    length_of_short_burst;
  830. int    short_burst_goes_first;
  831. int    full_burst_count;
  832. int    first_data_to_send;
  833. int    increment_factor;
  834. int    ready_timeout_limit;
  835. } HPPIS_SESSION_COMMAND;
  836.  
  837. typedef    struct
  838. {
  839. RESPONSE_HEADER    response;
  840. int    hppi_status_register;
  841. int    burst_sent;
  842. int    burst_number_when_failure_occured;
  843. } HPPIS_SESSION_RESPONSE;
  844.  
  845. typedef    struct
  846. {
  847. int    length;
  848. int    command_id;
  849. int    caller_pid;
  850. } HPPI_RECEIVE_COMMAND;
  851.  
  852. typedef    struct
  853. {
  854. RESPONSE_HEADER    response;
  855. } HPPI_RECEIVE_RESPONSE;
  856.  
  857. #define    WORDS_IN_FULL_BURST    256
  858.  
  859. typedef    struct
  860. {
  861. RESPONSE_HEADER    response;
  862. int    length_of_burst_recieved;
  863. int    burst_data [WORDS_IN_FULL_BURST];
  864. } BURST_DATA;
  865. #endif
  866.  
  867. #endif /* _HPPI */
  868. @
  869.  
  870.  
  871. 1.11
  872. log
  873. @Added status information to all the "short form" command blocks.
  874. @
  875. text
  876. @d16 1
  877. a16 1
  878.  * $Header: /sprite/src/lib/include/dev/RCS/hppi.h,v 1.10 92/01/10 02:04:15 elm Exp Locker: elm $ SPRITE (Berkeley)
  879. d63 1
  880. d114 2
  881. a115 1
  882.     uint16    tag;
  883. d129 3
  884. a131 3
  885.     uint32 reqBlockSize;
  886.     uint32 queueAddress;
  887.     uint32 queueSize;
  888. d135 12
  889. d152 7
  890. a158 9
  891.     Dev_HppiCmdHdr hdr;
  892.     uint16     xrbRef;
  893.     uint16    status;
  894.     uint32    xrbId;
  895.     uint32    xrbBufId;
  896.     uint8    xrbRemTA[7];
  897.     uint8    FILLER2;
  898.     uint8    xrbLocTA[7];
  899.     uint8    FILLER3;
  900. d162 8
  901. a169 10
  902.     Dev_HppiCmdHdr hdr;
  903.     uint16 xrbRef;
  904.     uint16 status;
  905.     uint32 xrbId;
  906.     uint32 xrbBufId;
  907.     uint8 xrbConPar[16];
  908.     uint8 xrbRemTA[7];
  909.     uint8 FILLER2;
  910.     uint8 xrbLocTA[7];
  911.     uint8 FILLER3;
  912. d172 5
  913. d178 2
  914. a179 5
  915.     Dev_HppiCmdHdr hdr;
  916.     uint16 xrbRef;
  917.     uint16 status;
  918.     uint32 xrbId;
  919.     uint32 xrbBufId;
  920. d182 4
  921. d187 4
  922. a190 7
  923.     Dev_HppiCmdHdr hdr;
  924.     uint16 xrbRef;
  925.     uint16 status;
  926.     uint16 FILLER1;
  927.     uint16 xrbISOCode;
  928.     uint32 xrbId;
  929.     uint32 xrbBufId;
  930. d194 3
  931. a196 6
  932.     Dev_HppiCmdHdr hdr;
  933.     uint16 xrbRef;
  934.     uint16 status;
  935.     uint32 xrbId;
  936.     uint32 xrbBufId;
  937.     uint32 cnt;
  938. d200 10
  939. a209 11
  940.     Dev_HppiCmdHdr hdr;
  941.     uint16 xrbRef;
  942.     uint16 status;
  943.     uint32 xrbId;
  944.     uint32 xrbBufId;
  945.     uint8 xrbRemTA[7];
  946.     uint8 FILLER2;
  947.     uint8 xrbLocTA[7];
  948.     uint8 FILLER3;
  949.     uint8 xrbDG[6];
  950.     uint16 FILLER4;
  951. d213 11
  952. a223 13
  953.     Dev_HppiCmdHdr hdr;
  954.     uint16 xrbRef;
  955.     uint16 status;
  956.     uint32 xrbId;
  957.     uint32 xrbBufId; 
  958.     uint8 xrbRemTA[7];
  959.     uint8 FILLER2;
  960.     uint8 xrbLocTA[7];
  961.     uint8 FILLER3;
  962.     uint8 xrbDG[6];
  963.     uint16 FILLER4;
  964.     uint32 fifoDataSize;
  965.     uint32 iopDataSize;
  966. @
  967.  
  968.  
  969. 1.10
  970. log
  971. @added separate SRC and DST board flag setting.
  972. @
  973. text
  974. @d16 1
  975. a16 1
  976.  * $Header: /sprite/src/lib/include/dev/RCS/hppi.h,v 1.9 91/08/12 13:33:17 elm Exp Locker: elm $ SPRITE (Berkeley)
  977. d22 2
  978. d64 3
  979. d112 3
  980. a114 2
  981.     uint16 size;
  982.     uint16 tag;
  983. d132 87
  984. d311 10
  985. d426 1
  986. d490 1
  987. @
  988.  
  989.  
  990. 1.9
  991. log
  992. @added IOP input/output command codes
  993. @
  994. text
  995. @d16 1
  996. a16 1
  997.  * $Header: /sprite/src/lib/include/dev/RCS/hppi.h,v 1.8 91/08/07 15:19:19 elm Exp Locker: elm $ SPRITE (Berkeley)
  998. d59 2
  999. @
  1000.  
  1001.  
  1002. 1.8
  1003. log
  1004. @added DEV_HPPI_IOP_BOARD flag
  1005. @
  1006. text
  1007. @d16 1
  1008. a16 1
  1009.  * $Header: /sprite/src/lib/include/dev/RCS/hppi.h,v 1.7 91/08/05 16:55:18 elm Exp Locker: elm $ SPRITE (Berkeley)
  1010. d214 2
  1011. @
  1012.  
  1013.  
  1014. 1.7
  1015. log
  1016. @added board flags for xbusboard slot #
  1017. @
  1018. text
  1019. @d16 1
  1020. a16 1
  1021.  * $Header: /sprite/src/lib/include/dev/RCS/hppi.h,v 1.6 91/07/24 12:25:54 elm Exp Locker: elm $ SPRITE (Berkeley)
  1022. d194 1
  1023. @
  1024.  
  1025.  
  1026. 1.6
  1027. log
  1028. @Added extra debugging flags (DEV_HPPI_FLAG_DEBUG_*).
  1029. @
  1030. text
  1031. @d16 1
  1032. a16 1
  1033.  * $Header: /sprite/src/lib/include/dev/RCS/hppi.h,v 1.5 91/06/27 12:10:14 elm Exp Locker: elm $ SPRITE (Berkeley)
  1034. d189 2
  1035. @
  1036.  
  1037.  
  1038. 1.5
  1039. log
  1040. @Include file for first working hppi kernel.
  1041. @
  1042. text
  1043. @d16 1
  1044. a16 1
  1045.  * $Header: /sprite/src/lib/include/dev/RCS/hppi.h,v 1.4 91/03/30 17:25:51 elm Exp Locker: elm $ SPRITE (Berkeley)
  1046. d186 3
  1047. @
  1048.  
  1049.  
  1050. 1.4
  1051. log
  1052. @Mary checking this in for Elm.
  1053. @
  1054. text
  1055. @d16 1
  1056. a16 1
  1057.  * $Header: /sprite/src/lib/include/dev/RCS/hppi.h,v 1.3 91/02/01 16:26:53 elm Exp Locker: elm $ SPRITE (Berkeley)
  1058. d127 1
  1059. a127 1
  1060.     unsigned short    reference;    /* VC reference. Set to 0. */
  1061. d129 1
  1062. a129 1
  1063.     char        *infoPtr;    /* Unused. */
  1064. @
  1065.  
  1066.  
  1067. 1.3
  1068. log
  1069. @*** empty log message ***
  1070. @
  1071. text
  1072. @d16 1
  1073. a16 1
  1074.  * $Header: /sprite/src/lib/include/dev/RCS/hppi.h,v 1.1 90/12/05 12:36:01 elm Exp Locker: elm $ SPRITE (Berkeley)
  1075. d148 6
  1076. d194 1
  1077. d256 5
  1078. @
  1079.  
  1080.  
  1081. 1.2
  1082. log
  1083. @made minor modifications before working version
  1084. @
  1085. text
  1086. @d27 32
  1087. a58 10
  1088. #define IOC_HPPI_LOAD            (IOC_HPPI | 0x2)
  1089. #define IOC_HPPI_GO            (IOC_HPPI | 0x3)
  1090. #define IOC_HPPI_DEBUG            (IOC_HPPI | 0x4)
  1091. #define IOC_HPPI_TRACE            (IOC_HPPI | 0x5)
  1092. #define IOC_HPPI_MAP_THRESHOLD        (IOC_HPPI | 0x6)
  1093. #define IOC_HPPI_ECHO            (IOC_HPPI | 0x7)
  1094.  
  1095. #define IOC_HPPI_RESET            (IOC_HPPI | 0x11)
  1096. #define IOC_HPPI_SRC_RESET        (IOC_HPPI | 0x12)
  1097. #define IOC_HPPI_DST_RESET        (IOC_HPPI | 0x13)
  1098. a59 4
  1099. #define IOC_HPPI_COLLECT_STATS        (IOC_HPPI | 0x20)
  1100. #define IOC_HPPI_GET_STATS        (IOC_HPPI | 0x21)
  1101. #define IOC_HPPI_CLEAR_STATS        (IOC_HPPI | 0x22)
  1102.  
  1103. d137 2
  1104. d148 36
  1105. d189 15
  1106. a203 9
  1107. #define DEV_HPPI_SET_TRACE        0x100
  1108. #define DEV_HPPI_DUMP_TRACE        0x101
  1109. #define DEV_HPPI_CLEAR_TRACE        0x102
  1110. #define DEV_HPPI_OUTPUT            0x103
  1111. #define DEV_HPPI_OUTPUT_TRACE        0x1103
  1112. #define DEV_HPPI_RESET            0x104
  1113. #define DEV_HPPI_SCATTER_GATHER        0x105
  1114. #define    DEV_HPPI_SCATTER_GATHER_TRACE    0x1105
  1115. #define DEV_HPPI_SETUP            0x106
  1116. d215 6
  1117. a220 6
  1118. #define DEV_HPPI_DST_INTR_ALL        (DEV_HPPI_DST_INTR_CBIAVAIL |
  1119.                      DEV_HPPI_DST_INTR_GEN |
  1120.                      DEV_HPPI_DST_INTR_PARITY |
  1121.                      DEV_HPPI_DST_INTR_ACCESS |
  1122.                      DEV_HPPI_DST_INTR_IFIFO_EMPTY |
  1123.                      DEV_HPPI_DST_INTR_OFIFO_READY |
  1124. d222 431
  1125. @
  1126.  
  1127.  
  1128. 1.1
  1129. log
  1130. @Initial revision
  1131. @
  1132. text
  1133. @d16 1
  1134. a16 1
  1135.  * $Header: /scratch1/elm/src/kernel/net.elm/RCS/netHppiInt.h,v 1.1 90/12/04 17:04:56 elm Exp Locker: elm $ SPRITE (Berkeley)
  1136. d22 15
  1137. d38 4
  1138. d80 5
  1139. d89 1
  1140. a91 5
  1141. typedef struct Dev_HppiScatterGatherElement {
  1142.     uint32 address;
  1143.     uint32 size;
  1144. } Dev_HppiScatterGatherElement;
  1145.  
  1146. d96 1
  1147. d124 2
  1148. d128 4
  1149. a131 4
  1150. #define    DEV_HPPI_SRC_MAGIC    0xfade
  1151. #define DEV_HPPI_DEST_MAGIC    0xcafe
  1152. #define DEV_HPPI_ERR_MAGIC    0xdeadfad
  1153. #define DEV_HPPI_COPY_MAGIC    0xface
  1154. d142 18
  1155. @
  1156.